Edit Class Reference

List of all members.

Public Member Functions

 __construct ()
 showForm ($editID)
 resolveForm ($data)

Private Member Functions

 printSubFolder ($fileID, $sql_add, &$folderArr, $COUNT=0, $layer="··", $selectedFile="", $fileSelf="")

Private Attributes

 $role = null
 $team = null

Detailed Description

Definition at line 47 of file class.edit.inc.php.


Constructor & Destructor Documentation

Edit::__construct (  ) 

Konstruktor. public

Definition at line 64 of file class.edit.inc.php.

References $_SESSION.

00064                            {
00065         if (isset($_SESSION["roleID"])) {
00066             $this->role = new Role($_SESSION["roleID"]);
00067         }
00068         if (isset($_SESSION["teamID"])) {
00069             $this->team = new Team($_SESSION["teamID"]);
00070         }
00071     }


Member Function Documentation

Edit::printSubFolder ( fileID,
sql_add,
&$  folderArr,
COUNT = 0,
layer = "··",
selectedFile = "",
fileSelf = "" 
) [private]

Erstellt eine Baumstrukur aller Ordner, auf die der User Schreibrechte hat und die er sehen darf private

Parameters:
ezsql [$fileID] -
string [$sql_add] - SQL zusatz, ist Usergruppenabhaenigig
array [$folderArr] - Array der Ermittelten Folder, ist ein Zeiger der Uebergeben wird
int [$COUNT] - Ist der Array Zaehler von folderArr
string [$layer] - Sind die zeichen vorm Ordnernamen fuer visualisierung der baumstrukur
Returns:
Anzahl der Elemente im Array

AAnnssoten gaanz Normal

Definition at line 219 of file class.edit.inc.php.

References $_SESSION, and $db.

Referenced by showForm().

00219                                                                                                                                              {
00220         global $db;
00221         $folders = $db->get_results("SELECT fileID, link, student_write, userID FROM filelist WHERE parent_object='".$fileID."' AND courseID=".$_SESSION['course']."  AND type='folder' $sql_add ORDER BY name");
00222         if ($selectedFile > 0 && $COUNT == 0 && ($_SESSION["usergroup"] == ADMIN || ($_SESSION["usergroup"] == DOZENT && $_SESSION["course"] > 0) || isset($_SESSION["assistent"]))) {
00223             $folderArr[$COUNT++] = array("Zum Hauptordner machen", 0);
00224         }
00225         if ($folders) foreach($folders as $folder) {
00226             if ($fileSelf == $folder->fileID) { // Wenn Ordner, wird er selbst nicht angezeigt und kein Unterordner
00227                 continue;
00228             } elseif ($selectedFile == $folder->fileID) { // Der jetzige Ueberordner wird besonders ddeklarrriet
00229                 $folderArr[$COUNT][0] = $layer." • ".Data::toHTML($folder->link, false); //.".......................*** HOME ***";
00230                 $folderArr[$COUNT++][1] = $folder->fileID;
00231             } else { 
00232                 $folderArr[$COUNT][0] = $layer." • ".Data::toHTML($folder->link, false);
00233                 $folderArr[$COUNT++][1] = $folder->fileID;
00234             }
00235             $COUNT = $this->printSubFolder($folder->fileID, $sql_add, $folderArr, $COUNT, $layer."··", $selectedFile, $fileSelf);
00236         }
00237         return $COUNT;
00238     }

Edit::resolveForm ( data  ) 

Wertet das Formular aus und traegt die Daten in die Datenbank ein public

Parameters:
array $data - Array mit dem Formulareintraegen
Returns:
bool - Erfolgswert

Definition at line 245 of file class.edit.inc.php.

References $_SESSION, and $db.

00245                                        {
00246         global $db, $EZSQL_ERROR;
00247         echo "<table>";
00248         /************************************ FEHLERUEBERPRUEFUNG BEGIN***********************************************/
00249         if ($data['link'] == "" && $data['type'] != "file") {
00250             switch ($data['type']) {
00251                 case 'ROOT':
00252                 case 'folder':
00253                     $ERROR = "Sie haben keinen Ordnernamen angegeben!";
00254                     break;
00255 
00256                 case 'link':
00257                     $ERROR = "Sie haben keinen Link angegeben!";
00258                     break;
00259             }
00260             Output::errorMessage($ERROR, 2);
00261         }
00262         if ($data['name'] == "") {
00263             switch ($data['type']) {
00264                 case 'ROOT':
00265                 case 'folder':
00266                     $ERROR = "Sie haben keinen erl&auml;uternden Ordnernamen (Tooltip) angegeben!";
00267                     break;
00268 
00269                 case 'link':
00270                     $ERROR = "Sie haben keinen Namen f&uuml;r den Link angegeben!";
00271                     break;
00272 
00273                 case 'file':
00274                     $ERROR = "Sie haben keinen Namen f&uuml;r die Datei angegeben!";
00275                     break;
00276             }
00277             Output::errorMessage($ERROR, 2);
00278         }
00279         if ($data['parent_object'] == "" && $data['type'] != 'ROOT') {
00280             $ERROR = "Sie haben keinen Zielordner ausgew&auml;hlt!";
00281             Output::errorMessage($ERROR, 2);
00282         }
00283         if ($data['type'] == 'link') {
00284             if (!Utilities::validateURL($data['link'])) {
00285                 $ERROR = "Sie haben eine ung&uuml;ltige URL angegeben!";
00286                 Output::errorMessage($ERROR, 2);
00287             }
00288             if (strlen($data['name']) > 40) {
00289                 $ERROR = "Linkname darf h&ouml;chstens 40 Zeichen lang sein.";
00290                 Output::errorMessage($ERROR, 1);
00291             }
00292         }
00293         if ($data['type'] == 'folder') {
00294             if (strlen($data['link']) > 20) {
00295                 $ERROR = "Ordnername darf h&ouml;chstens 20 Zeichen lang sein.";
00296                 Output::errorMessage($ERROR, 1);
00297             }
00298         }
00299         // Wenn bis hierher schon ein Fehler festgestellt wurde bricht er ab
00300         if (isset($ERROR)) {
00301             echo "</table>";
00302             return false;
00303         }
00304         /************************************ FEHLERUEBERPRUEFUNG ENDE ***********************************************/
00305         switch ($data['type']) {
00306             case 'ROOT': // Hauptordner anlegen
00307                 $data['type'] = 'folder';
00308                 $type = "von Hauptordner";
00309                 break;
00310 
00311             case 'folder': // Unterordner anlegen
00312                 $type = "von Ordner";
00313                 break;
00314 
00315             case 'link':
00316                 $type = "von Link";
00317                 break;
00318 
00319             case 'file':
00320                 $type = "von Datei";
00321                 break;
00322         }
00323         // Baut die SQL Abfrage anhand des Arrays data auf.
00324         // Alle Felder ohne "tmp" werden als FeldName benutzt und ihr Wert in die DB eingetragen
00325         $SQLdata = "";
00326         foreach($data as $key => $value) {
00327             if (!strstr($key, "tmp")) {
00328                 $SQLdata.= $key."='".Data::toMysql($value) ."',";
00329             }
00330         }
00331         $SQL = "UPDATE filelist SET ".substr($SQLdata, 0, -1) ." WHERE fileID='".$data['fileID']."' "; // SQL Abfrage ohne Endene Kommas
00332         $errorCount = count($EZSQL_ERROR);
00333         $db->query($SQL);
00334         if (count($EZSQL_ERROR) > $errorCount || $data['fileID'] < 0) {
00335             Output::errorMessage("Fehler beim Anlegen ".$type." in der Datenbank!");
00336             echo "</table>";
00337             return false;
00338         }
00339         if (isset($this->role)) {
00340             RoleArtefacts::setRoleForItem(RESSOURCE, (int)$data["fileID"], $_SESSION["roleID"]);
00341         } else {
00342             RoleArtefacts::deleteItem(RESSOURCE, (int)$data["fileID"]);
00343         }
00344         if (isset($this->team)) {
00345             TeamArtefacts::setTeamForItem(RESSOURCE, (int)$data["fileID"], $_SESSION["teamID"]);
00346         } else {
00347             TeamArtefacts::deleteItem(RESSOURCE, (int)$data["fileID"]);
00348         }
00349         // Spezielle UserSichtbarkeit
00350         // Erst alle Loeschen
00351         $db->query("DELETE FROM filevisible WHERE fileID='".$data['fileID']."'");
00352         if ($data['fileID'] && $data['visible_type'] != 1 && isset($data['tmpfileVisibleList'])) {
00353             // Dann eintraege machen
00354             $errorCount = count($EZSQL_ERROR);
00355             foreach($data['tmpfileVisibleList'] as $value) {
00356                 $db->query("INSERT INTO filevisible (fileID,userID) VALUES(".$data['fileID'].",".$value.")");
00357             }
00358             if (count($EZSQL_ERROR) > $errorCount) {
00359                 Output::errorMessage("Aktion nicht erfolgreich durchgef&uuml;hrt!", 1);
00360                 echo "</table>";
00361                 return false;
00362             }
00363         }
00364         Output::echoMessage("Aktion wurde erfolgreich durchgef&uuml;hrt !", 1);
00365         echo "</table>";
00366         return true;
00367     }

Edit::showForm ( editID  ) 

Generiert Formular zum Editieren von Eigenschaften public

Returns:
void

Definition at line 77 of file class.edit.inc.php.

References $_SESSION, $db, and printSubFolder().

00077                                       {
00078         global $db, $EZSQL_ERROR;
00079         // Initialisierung
00080         $time = time();
00081         $sql_add = "";
00082         $heute = getdate();
00083         $course = $_SESSION['course'];
00084         $form = new Formular();
00085         // INITIALISIERUNG von Kalender Anzeige
00086         // DateSelection Objekt erzeugen und das heutige (start-) Datum einstellen
00087         $calendar = new DateSelection($heute['mday'], $heute['mon'], $heute['year'], $heute['hours'], $heute['minutes']);
00088         //Javascript deaktivieren
00089         $calendar->autoUpdate = false;
00090         //Name des Formulars einstellen
00091         $calendar->formName = "insert";
00092         //Die Ausgabestrings löschen (keine Bezeichner vor den Auswahlfeldern)
00093         $calendar->clearStrings();
00094         // Hohlen des zu Editierenden Eintrags
00095         $query = "SELECT fileID, courseID, name, link, parent_object, description, userID, type, visible_type, start_time, end_time, student_write, parent_object FROM filelist WHERE fileID='".$editID."'";
00096         $editFile = $db->get_row($query);
00097         if (is_null($editFile)) return false;
00098         // Wenn versuch Foyer Ordner im Kurs zu editieren -> Geht nicht
00099         if ($_SESSION['course'] != 0 && $editFile->courseID == 0) {
00100             echo "<table width='100%' class='center'>";
00101             Output::errorMessage("Sie k&ouml;nnen keine Foyer-Ressourcen im Kurs bearbeiten. Bitte gehen Sie hierzu ins Foyer!");
00102             echo "</table>";
00103             return false;
00104         }
00105         // Wenn nicht Admin oder Besitzer -> VERBOT
00106         if (($_SESSION['usergroup'] == STUDENT || $_SESSION['usergroup'] == ALUMNUS || $_SESSION['usergroup'] == SCHUELER || $_SESSION['usergroup'] == GAST) 
00107                 && $editFile->userID != $_SESSION['userid']) {
00108             echo "<table width='100%' class='center'>";
00109             Output::errorMessage("Sie sind nicht berechtigt, diese Datei zu editieren.<br/>Nur Admins (Dozent/Tutor) oder der Besitzer der Datei darf das!");
00110             echo "</table>";
00111             return false;
00112         }
00113         // BEGIN von Formular erstellen
00114         // Init
00115         $form->setFormHead("edit"); //Name des Formulars
00116         $form->setTemplate("<table>", "<tr><td class='tableCell'>", "<td class='tableCell'>"); // Setzt die UmgebungsTags
00117         $form->setButtons(1, "Abschicken"); //Setzt die Buttons
00118         $form->addInput("hidden", "fileID", "", 30, $editID);
00119         $TYPE = $editFile->type;
00120         if ($editFile->parent_object == 0) $TYPE = "ROOT";
00121         $form->addInput("hidden", "type", "", 30, $TYPE);
00122         if (isset($this->role)) {
00123             $form->addRawCode("<tr><td class='message' colspan='2'>Sie nehmen zur Zeit die Rolle <strong>".Data::toHTML($this->role->getName($_SESSION["gender"]), false) ."</strong> ein.<br />Wenn Sie ein Element bearbeiten, wird dieses unter Ihrem Rollennamen ver&ouml;ffentlicht.</td></tr>");
00124         }
00125         // TrennZeile
00126         $form->addRawCode("<tr><td class='tableHead' colspan='2'>Ben&ouml;tigte Einstellungen</td></tr>"); // Fuegt eine Ueberschriftszeile ein
00127         if (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST)  
00128                 && $editFile->type == "folder") $form->addInput("checkbox", "student_write", "Schreibberechtigung f&uuml;r Studenten", 30, 1, $editFile->student_write);
00129         $form->addInput("text", "name", "<strong>Link:</strong> Bitte geben Sie einen Namen f&uuml;r den Link an.<br/><strong>Ordner: </strong>Bitte geben Sie einen erl&auml;uternden Namen (Tooltip) f&uuml;r den Ordner an.<br/><span class='text10'>(max. 40 Zeichen)></span>", 41, $editFile->name, 40);
00130         if ($editFile->type != "file") $form->addInput("text", "userfile", "<strong>Link:</strong> Bitte geben Sie eine URL ein.<br/><strong>Ordner: </strong>Bitte geben Sie einen Ordnernamen ein.<br/><span class='text10'>(OrdnerName=>max. 20 Zeichen)</span>", 41, $editFile->link);
00131         else $form->addInput("hidden", "userfile", "", 41, $editFile->link);
00132         // SQL Abfragen fuer Unterschiedliche UserGruppen => admin und Dozenten duerfen alle Dateien und Verz. sehen
00133         if ($_SESSION['usergroup'] == STUDENT || $_SESSION['usergroup'] == ALUMNUS || $_SESSION['usergroup'] == SCHUELER || $_SESSION['usergroup'] == GAST) 
00134         $sql_add = "AND (userID='".$_SESSION['userid']."' OR (visible_type='1' AND start_time<'$time' AND end_time>'$time' AND student_write=1) )";
00135         else if ($_SESSION['usergroup'] == SEKRETARIAT) // Tutor
00136         $sql_add = "AND (userID='".$_SESSION['userid']."' OR visible_type<=2)";
00137         // Zeichnet die OrdnerLIste in Baumstruktur
00138         $folderArr = NULL;
00139         $this->printSubFolder(0, $sql_add, $folderArr, 0, "", $editFile->parent_object, $editID);
00140         $form->addSelect("folder", "Bitte geben Sie den Zielordner an<br/><span class='text10'><em> (ist ohne Bedeutung, wenn Sie einen Hauptordner anlegen.)</em></span>", $folderArr, 10, false, $editFile->parent_object);
00141         $form->addTextArea("comment", "Datei-Beschreibung (optional)<br/><span class='text10'><em> (max. 255 Zeichen)</em></span>", 40, 3, $editFile->description);
00142         $visibleArr = array(array("Alle", "1"), array("Dozenten und Tutoren", "2"), array("Dozenten", "3"));
00143         $form->addSelect("visible", "W&auml;hlen Sie hier die Benutzergruppe aus, die Ihren Eintrag sehen darf:", $visibleArr, 1, false, $editFile->visible_type);
00144         $form->addButtons();
00145         // Tutoren und Dozenten duerfen einzelberrechtigungen setzen (User, Zeit)
00146         if (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"]) 
00147                 || (($_SESSION['usergroup'] == STUDENT || $_SESSION['usergroup'] == ALUMNUS)  && $course > 0)) {
00148             // Ueberschriftszeile
00149             $form->addRawCode("<tr><td class='tableHead' colspan='2'>Optionale Einstellungen</td></tr>");
00150             // Wenn im Foyer dann Alle Anzeigen
00151             if ($course == 0) $names = $db->get_results("SELECT ID, Vorname, Nachname FROM user WHERE Usergroup > 1 AND Invisible = 0 AND ID <> ".$_SESSION["userid"]." ORDER BY Nachname, Vorname");
00152             else $names = $db->get_results("SELECT ID, Vorname, Nachname, user_course.courseID FROM user, user_course WHERE user.ID=user_course.userID AND user_course.courseID='$course' AND Usergroup > 1 AND userID <> ".$_SESSION["userid"]." ORDER BY Nachname, Vorname");
00153             // Erstellt UserListe fuer Spezielle Sichtbarkeit
00154             $COUNT = 0;
00155             if (is_array($names)) {
00156                 $visibleUsers = $db->get_col("SELECT userID FROM filevisible WHERE fileID='".$editID."'");
00157                 foreach($names as $name) {
00158                     $visibleListArr[$COUNT][0] = Data::toHTML($name->Nachname.", ".$name->Vorname, false);
00159                     $visibleListArr[$COUNT++][1] = $name->ID;
00160                 }
00161             }
00162             if (is_array($visibleListArr)) $form->addSelect("visibleList", "Hier k&ouml;nnen Sie zus&auml;tzliche Personen ausw&auml;hlen, die Ihren Eintrag sehen d&uuml;rfen:<br/>(F&uuml;r Mehrfachselektierung STRG-Taste beim Klicken gedr&uuml;ckt halten.)<br/>(wird ignoriert, wenn als Benutzergruppe &quot;Alle&quot; ausgew&auml;hlt ist!)", $visibleListArr, 10, true, $visibleUsers);
00163         }
00164         if (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST)  || isset($_SESSION["assistent"])) {
00165             $form->addMarker();
00166             $form->addButtons();
00167             echo $form->getForm(0);
00168             // *************  kalender plugin **************************************
00169 
00170 ?>
00171 <tr>
00172     <td class='tableCell'>F&uuml;r welche Zeit sichtbar?<br/><span class='text10'><em>(wenn Sie nichts ausw&auml;hlen ist der Eintrag immer sichtbar)</em></span></td>
00173     <td class='tableCell'>Anzeigebeginn Datum/Zeit:<br/>
00174 <?php
00175             if ($editFile->start_time > 0) {
00176                 $Date = getdate($editFile->start_time);
00177                 $calendar->setDate($Date['mday'], $Date['mon'], $Date['year']);
00178                 $calendar->setTime($Date['hours'], $Date['minutes']);
00179             }
00180             if (isset($_POST['okButton'])) {
00181                 //falls $_POST - Variablen vorhanden sind, auf das entsprechende Datum einstellen
00182                 $calendar->setDate($_POST['openDate_day'], $_POST['openDate_month'], $_POST['openDate_year']);
00183                 $calendar->setTime($_POST['openDate_hour'], $_POST['openDate_minute']);
00184             }
00185             //die Datums Auswahlfelder ausgeben
00186             $calendar->printCalender("openDate", "dateExt");
00187             $calendar->printCalender("openDate", "time");
00188             echo "<br/><br/>Anzeigeende Datum/Zeit:<br/>";
00189             if ($editFile->end_time < 2147483647) {
00190                 $Date = getdate($editFile->end_time);
00191                 $calendar->setDate($Date['mday'], $Date['mon'], $Date['year']);
00192                 $calendar->setTime($Date['hours'], $Date['minutes']);
00193             }
00194             if (isset($_POST['okButton'])) {
00195                 //falls $_POST - Variablen vorhanden sind, auf das entsprechende Datum einstellen
00196                 $calendar->setDate($_POST['closeDate_day'], $_POST['closeDate_month'], $_POST['closeDate_year']);
00197                 $calendar->setTime($_POST['closeDate_hour'], $_POST['closeDate_minute']);
00198             }
00199             $calendar->printCalender("closeDate", "dateExt");
00200             $calendar->printCalender("closeDate", "time");
00201             echo "    </td>\n</tr>\n";
00202             // *************  kalender plugin **************************************
00203             echo $form->getForm(1);
00204         } else {
00205             echo $form->getForm();
00206         }
00207     }


Member Data Documentation

Edit::$role = null [private]

Definition at line 53 of file class.edit.inc.php.

Edit::$team = null [private]

Definition at line 59 of file class.edit.inc.php.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Enumerations

Generated on Fri Oct 30 17:21:39 2009 for MSP Modul Ressourcen by  doxygen 1.6.1